/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package GeneracionDatos;

import Configuracion.Propiedades;
import java.util.Properties;
import Modelo.Interseccion;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
 *
 * @author Ed
 */
public class GenerarInterseccionData {
    int largoZona = 1000; // Lado de la zona (zona es un cuadrado)
    int nroFotos = 10000; //cantidad de registros que tiene cada archivo
    int largoCuadra = 100; //largo del lado de una cuadra.
    int nroIntersecciones = (largoZona/largoCuadra)^2; //todo intersecciones
    Interseccion inters= new Interseccion();
    
    public GenerarInterseccionData() {
        int nroAv = largoZona/largoCuadra; //cada nroAv de metros hay una av        
        int cuentaFiles=0;
        Properties propiedades = new Propiedades().getProperties();
        for(int y=0; y< (largoZona) ; y+=largoCuadra)           
        {
            for(int x=0; x< (largoZona) ; x+=largoCuadra)
            {
                cuentaFiles++;
                String ruta = propiedades.getProperty("pathIntersecciones");
                String nombArch = Integer.toString(cuentaFiles);
                String pos = Integer.toString(x) + " " + Integer.toString(y);
                File arch = new File(ruta + nombArch + ".txt");                
                try
                {
                    FileWriter escritor = new FileWriter(arch);
                    this.Escribe(escritor,pos);
                    escritor.close();
                }catch (IOException e){Logger.getLogger(Generador.class.getName()).log(Level.SEVERE, null, e);}
            }            
        }
    }
    
    public void Escribe(FileWriter a, String pos)
    {
        int margen=7; //numero aleatorio +- margen
        int maxCars=60;
        int oe = 1 + (int)(Math.random()*maxCars);
        int eo = 1 + (int)(Math.random()*maxCars);
        int ns = 1 + (int)(Math.random()*maxCars);
        int sn = 1 + (int)(Math.random()*maxCars);
        try{
            a.write(pos+"\n");
            for(int k=0; k<this.nroFotos;k++)
            {
                int coef = 1 - (int)(Math.random()*(3));
                int oew = this.Comprueba(oe,coef*((int)(Math.random()*margen)));
                int eow = this.Comprueba(eo,coef*((int)(Math.random()*margen)));
                int nsw = this.Comprueba(ns,coef*((int)(Math.random()*margen)));
                int snw = this.Comprueba(sn,coef*((int)(Math.random()*margen)));
                a.write(Integer.toString(oew)+" "+Integer.toString(eow)+" "+Integer.toString(nsw)+" "+Integer.toString(snw)+"\n");
            }
            
        }catch (IOException e){Logger.getLogger(Generador.class.getName()).log(Level.SEVERE, null, e);}
    }
    
    public int Comprueba(int a, int b)
    {
        if(a+b<0) return a;
        else return a+b;
    }
    
    
    
    
    
}
